﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using s2b.ControleDesenvolvimentoProjetos.Dados.OBJ;
using s2b.ControleDesenvolvimentoProjetos.Util.Auxiliar;
using System.Data.SqlClient;

namespace s2b.ControleDesenvolvimentoProjetos.UserControls
{
    public partial class WUCTarefa : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                CarregaDatas();
                CarregaProjeto();
                CarregaStatus();
                CarregaFuncionario();

                if (Request.QueryString["ID_TAREFA"] != null)
                {

                    PreencheDados();
                    btnTarefa.Text = "Atualizar Tarefa";

                }
                else
                {
                    btnTarefa.Text = "Adicionar Tarefa";

                }

            }
        }
        private void CarregaDatas()
        {
            calendarFim.SelectedDate = DateTime.Now;
            calendarInicio.SelectedDate = DateTime.Now;
            txtDtFim.Text = calendarFim.SelectedDate.ToString("dd/MM/yyy");
            txtDtInicio.Text = calendarInicio.SelectedDate.ToString("dd/MM/yyy");
            


        }

        public void UpdateTarefa()
        {

            try
            {

                Auxiliar.ExecutaComando(String.Format("UPDATE TAREFAS SET ID_PROJETO = {0}, NOME_TAREFA = '{1}', DETALHE_TAREFA = '{2}', ID_STATUS = {3}, DT_INICIO_TAREF = '{4}', DT_FINAL_TAREFA = '{5}', CARGA_HORARIA = {6}, ID_FUNC = {7} WHERE ID_TAREFA = {8}",
                 ddlProjeto.SelectedValue, txtTarefa.Text, txtDescricao.Text, ddlStatus.SelectedValue, calendarInicio.SelectedDate, calendarFim.SelectedDate, txtCargaHoraria.Text, ddlFuncionario.SelectedValue, Request.QueryString["ID_TAREFA"]));

                Response.Redirect("WFVisualizarTarefas.aspx");

            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

        public void InsertTarefa()
        {
            try
            {
                Auxiliar.ExecutaComando(String.Format(@"INSERT INTO TAREFAS (ID_PROJETO, NOME_TAREFA, DETALHE_TAREFA, ID_STATUS, DT_INICIO_TAREF, DT_FINAL_TAREFA, CARGA_HORARIA, ID_FUNC, CARG_HOR_UTILIZ, PORC_CONCLUSAO)
VALUES({0}, '{1}', '{2}', {3}, {4}, {5}, {6} , {7}, {8}, {9})", ddlProjeto.SelectedValue, txtTarefa.Text, txtDescricao.Text, ddlStatus.SelectedValue, txtDtInicio.Text, txtDtFim.Text , txtCargaHoraria.Text, ddlFuncionario.SelectedValue, 0, 0));

                lblMsg.Text = "Tarefa adicionada com sucesso!";

            }
            catch (Exception ex)
            {
                lblMsg.Text = "Erro ao adicionar tarefa!";
            }
        }
        public void CarregaProjeto()
        {

            List<Projeto> projetos = new List<Projeto>();


            SqlDataReader executa = Auxiliar.RetornaRegistros("SELECT * FROM PROJETO", "PROJETO");
            while (executa.Read())
            {
                Projeto projeto = new Projeto();

                projeto.Id_projeto = Convert.ToInt32(executa["ID_PROJETO"]);
                projeto.Nome_projeto = executa["NOME_PROJETO"].ToString();

                projetos.Add(projeto);
            }
            Auxiliar.FecharConexao();
            foreach (Projeto projetoX in projetos)
            {
                ddlProjeto.Items.Add(new ListItem() { Text = projetoX.Nome_projeto, Value = projetoX.Id_projeto.ToString() });
            }
        }
      
        public void CarregaStatus()
        {

            List<Status> listStatus = new List<Status>();


            SqlDataReader executa = Auxiliar.RetornaRegistros("SELECT * FROM STATUS", "STATUS");
            while (executa.Read())
            {
                Status status = new Status();
                status.Id_status = Convert.ToInt32(executa["ID_STATUS"]);
                status.Desc_status = executa["DESC_STATUS"].ToString();
                listStatus.Add(status);
            }
            Auxiliar.FecharConexao();
            foreach (Status statusX in listStatus)
            {
                ddlStatus.Items.Add(new ListItem() { Text = statusX.Desc_status, Value = statusX.Id_status.ToString() });
            }
        }

        public void CarregaFuncionario()
        {

            List<Funcionario> listFunc = new List<Funcionario>();


            SqlDataReader executa = Auxiliar.RetornaRegistros("SELECT * FROM FUNCIONARIO", "FUNCIONARIO");
            while (executa.Read())
            {
                Funcionario func = new Funcionario();
                func.Id_func = Convert.ToInt32(executa["ID_FUNC"]);
                func.Nome_func = executa["NOME_FUNC"].ToString();
                listFunc.Add(func);
            }
            Auxiliar.FecharConexao();
            foreach (Funcionario funcX in listFunc)
            {
                ddlFuncionario.Items.Add(new ListItem() { Text = funcX.Nome_func, Value = funcX.Id_func.ToString() });
            }
        }


        protected void imgBtnCalendarInicio_Click(object sender, ImageClickEventArgs e)
        {
            calendarInicio.Visible = !calendarInicio.Visible;

        }

        protected void imgBtnCalendarFim_Click(object sender, ImageClickEventArgs e)
        {
            calendarFim.Visible = !calendarFim.Visible;
        }

        protected void calendarInicio_SelectionChanged(object sender, EventArgs e)
        {
            txtDtInicio.Text = calendarInicio.SelectedDate.ToString("dd/MM/yyy");
            calendarInicio.Visible = false;
        }

        protected void calendarFim_SelectionChanged(object sender, EventArgs e)
        {
            txtDtFim.Text = calendarFim.SelectedDate.ToString("dd/MM/yyy");
            calendarFim.Visible = false;
        }






        public void PreencheDados()
        {

            if (!IsPostBack)
            {

                SqlDataReader executa = Auxiliar.RetornaRegistros(String.Format("SELECT * FROM TAREFAS WHERE ID_TAREFA = {0}", Request.QueryString["ID_TAREFA"]), "TAREFAS");


                while (executa.Read())
                {

                    txtCargaHoraria.Text = executa["CARGA_HORARIA"].ToString();
                    txtDescricao.Text = executa[Tarefa.Detalhes].ToString();
                    ddlFuncionario.SelectedValue = executa["ID_FUNC"].ToString();
                    txtDtInicio.Text = calendarInicio.SelectedDate.ToString("dd/MM/yyy");
                    txtDtFim.Text = calendarFim.SelectedDate.ToString("dd/MM/yyy");
                    txtTarefa.Text = executa[Tarefa.Nome].ToString();
                    ddlProjeto.SelectedValue = executa["ID_PROJETO"].ToString();
                    ddlStatus.SelectedValue = executa["ID_STATUS"].ToString();
                    calendarInicio.SelectedDate = Convert.ToDateTime(executa["DT_INICIO_TAREF"]);
                    calendarFim.SelectedDate = Convert.ToDateTime(executa["DT_FINAL_TAREFA"]);


                }
                Auxiliar.FecharConexao();


            }
        }


        protected void btnTarefa_Click(object sender, EventArgs e)
        {
            if (Request.QueryString["ID_TAREFA"] != null)
            {
                UpdateTarefa();

            }
            else
            {

                InsertTarefa();

            }

            //InsertTarefa();
        }
    }
}